#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "iniparser.h"

int main() {
    dictionary *ini;
    const char *config_file = "config.ini";
    char ** test = NULL;

    // Load the INI file
    ini = iniparser_load(config_file);
    if (!ini) {
        fprintf(stderr, "Error: Failed to open INI file '%s'\n", config_file);
        return EXIT_FAILURE;
    }
    
    printf("-------iniparser_dump-------\n");
    iniparser_dump(ini, stderr);
    printf("-------iniparser_dump-------\n");

    printf("-------iniparser_dump_ini-------\n");
    iniparser_dump_ini(ini, stderr);
    printf("-------iniparser_dump_ini-------\n");

    // Get values from the INI file
    char *value1 = iniparser_getstring(ini, "section1:key1", NULL);
    int value2 = iniparser_getint(ini, "section1:key2", -1);
    double value3 = iniparser_getdouble(ini, "section2:key3", 0.0);

    // Print the values
    printf("value1: %s\n", value1);
    printf("value2: %d\n", value2);
    printf("value3: %lf\n", value3);

	printf("iniparsection:%d\n", iniparser_getnsec(ini));

    for(int i = 0; i < iniparser_getnsec(ini); i++)
    {
        printf("ini section name [%d]%s\n", i, iniparser_getsecname(ini,i));

    }

    iniparser_set(ini, "test3", NULL);
    iniparser_set(ini, "test3:set_ini", "123");

    iniparser_dump(ini, stderr);
    iniparser_save_file(ini, config_file);
    // Cleanup
    iniparser_freedict(ini);

    return 0;
}

